package VideoRent.Articulo;

import java.util.*;

import VideoRent.Articulo.*;
import VideoRent.Enum.*;

/**
 * Clase que especifica los atributos y métodos de las películas
 * ofrecidas en la videotienda
 */
public class Pelicula extends ArticuloAudiovisual{
    private static int precioVenta = 90;
    //Genero de la pelicula
    private GeneroAudiovisual genero;
    //Formato de la pelicula
    private FormatoPelicula formato;
    //Conjunto que contiene los nombres de los escritores de la pelicula
    private String escritores;
    //Conjunto que contiene los nombres de los directores de la pelicula    
    private String directores;
    //Apuntador a la secuela de la película
    private Pelicula secuela;

    /**
     * Constructor de la clase
     * @param cantidad Cantidad de elementos de la instancia actualmente en inventario
     * @param actores Contenedor de los nombres de los actores participantes
     * @param genero Genero de la pelicula
     * @param formato Formato de la pelicula
     * @param escritores Conjunto que contiene los nombres de los escritores de la pelicula
     * @param directores Conjunto que contiene los nombres de los directores de la pelicula  
     * @param secuela Apuntador a la secuela de la película
     */
    public Pelicula(String codigo, String nombre, int cantidad, int ano, String actores, GeneroAudiovisual genero, FormatoPelicula formato, 
                    String escritores, String directores, Pelicula secuela){
        super(codigo, nombre, cantidad, ano, actores);
        this.genero = genero;
        this.formato = formato;
        this.escritores = escritores;
        this.directores = directores;
        this.secuela = secuela;
    }

    //Lista de 'getters' para obtener los valores de los atributos de la clase

    public int getPrecioVenta(){return Pelicula.precioVenta;}
    public GeneroAudiovisual getGenero(){return genero;}
    public FormatoPelicula getFormato(){return formato;}
    public String getEscritores(){return escritores;}
    public String getDirectores(){return directores;}
    public Pelicula getSecuela(){return secuela;}

    //Lista de 'setters' para asignar los valores de los atributos de la clase

    public void setGenero(GeneroAudiovisual a){genero = a;}
    public void setFormato(FormatoPelicula a){formato = a;}
    public void setEscritores(String a){escritores = a;}
    public void setDirectores(String a){directores = a;}
    public void setSecuela(Pelicula a){secuela = a;}


    public String toString(){
        return getCodigo() + " & " +
               getCantidad() + " & " +
               getNombre() + " & " +
               getAno() + " & " +
               getGenero() + " & " +
               getFormato() + " & " +
               getDirectores() + " & " +
               getEscritores() + " & " +
               getActores() + (null == getSecuela() ? "" : " & " + getSecuela().getCodigo());
    }
}
